home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / c-part1 / 5696 < prev    next >
Encoding:
Text File  |  1996-08-05  |  2.0 KB  |  49 lines

  1. Newsgroups: comp.lang.c
  2. Path: tank.news.pipex.net!pipex!warwick!bsmail!talisker!nathan
  3. From: nathan@pact.srf.ac.uk (Nathan Sidwell)
  4. Subject: Re: How do I round and truncate floats to integers?
  5. Message-ID: <Dn2L2u.GqG@uns.bris.ac.uk>
  6. Sender: usenet@uns.bris.ac.uk (Usenet news owner)
  7. Nntp-Posting-Host: talisker.pact.srf.ac.uk
  8. Organization: Inmos
  9. X-Newsreader: TIN [version 1.2 PL2]
  10. References: <4g009b$c2n@news.tuwien.ac.at> <4gbb0p$c7s@news1.radix.net>
  11. Date: Tue, 20 Feb 1996 10:28:05 GMT
  12.  
  13. Jim Ward (jfw@radix.net) wrote:
  14. : In article <4g009b$c2n@news.tuwien.ac.at>, sor@rs6.iaee.tuwien.ac.at says...
  15. : >Given a float (double, to be exact) how do I 
  16. : >
  17. : >1) round it to nearest integer (forget 0.5 problem for the moment) and
  18.  
  19. : A technique that also works for both positive and negative numbers is:
  20.  
  21. :     (int) x < 0.0 ? ceil(x - 0.5) : floor(x + 0.5);
  22.  
  23. : I got this from p.135 of Plauger's The Standard C Library.
  24. Why would one want to round halves away from zero? This is a most bizarre
  25. rounding.
  26.  
  27. If one wants consistent rounding of halves towards plus infinity, then
  28. floor(x + 0.5) will suffice. to round halves to minus infinity then
  29. ceil(x - 0.5) will suffice.
  30.  
  31. The conversion (int)x, will convert x to an integer by 'discarding the
  32. fractional part' (3.2.1.3). Will this round towards zero?
  33. The standard does not define the format of floating point numbers,
  34. in particular it does not proscribe 2's complement floating point number
  35. formats. Discarding the fractional part of a twos complement
  36. representation is equivalent to rounding to minus infinity.
  37. I must conclude that it is implementation defined as to whether
  38. conversion of a negative floating point value to an integer returns
  39. the integer closer to zero, or the one closer to minus infinity.
  40. (The standard does not explicitly mention this though.)
  41.  
  42. nathan
  43.  
  44. --
  45. Nathan Sidwell                         Holder of the Xmris home page
  46. Chameleon Architecture Group at SGS-Thomson, formerly Inmos
  47. http://www.pact.srf.ac.uk/~nathan/                  Tel 0117 9707182
  48. nathan@inmos.co.uk or nathan@bristol.st.com or nathan@pact.srf.ac.uk
  49.